package com.me.jingdongshop.ui.view;

import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.me.jingdongshop.R;

/**
 * Created by YL on 2017/5/5.
 */

public class GoodsItemView extends LinearLayout {

    private TextView mTv_body;

    public GoodsItemView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        View child = View.inflate(context, R.layout.item_goods_view, null);
        // 2.2.3初始化布局内容添加到当前的控件，控件就可以显示布局内容
        addView(child);
        // 2.3为了给控件设置变量，首先要申明 String title enum background boolean isVisible
        // 2.3.1使用values/attrs.xml文件来申明变量
        // 2.3.2还需要导入这些变量的连接，不然系统认为这些变量不合法
        // 2.3.3去布局文件里面使用这几个变量
        // 2.4运行之后还是没有显示变量，只能去解析xml读取变量值，再赋值给控件
        // 2.4.1不需要自己手动编写xml解析，因为系统已经解析完了，放在AttributeSet里面
        // 2.4.2读取获取方法获取自定义变量的值，参考ListView源代码
        // 参1.所有变量包含系统与自定义，参2.变量的申明名字
        TypedArray t = context.obtainStyledAttributes(attrs,
                R.styleable.GoodsItemView);
        // getString获取变量值的方法
        String title = t.getString(R.styleable.GoodsItemView_siTitle);
        boolean siVisible = t.getBoolean(R.styleable.GoodsItemView_siVisible,
                false);
        boolean isClick = t.getBoolean(R.styleable.GoodsItemView_isClick,
                false);
        String body = t.getString(R.styleable.GoodsItemView_siBody);
        // 2.4.3.根据读取的值编写判断逻辑
        TextView tx = (TextView) child.findViewById(R.id.item_goods_name);
        mTv_body = (TextView) child.findViewById(R.id.item_good_body);
        this.isVisible = (ImageView) child.findViewById(R.id.item_good_loc);
        RelativeLayout rl = (RelativeLayout) child
                .findViewById(R.id.item_good_rl);

        tx.setText(title);
        if (!siVisible) {
            this.isVisible.setVisibility(GONE);
        }
        mTv_body.setText(body);
        t.recycle();// 因为TypedArray比较占用内存
    }

    private ImageView isVisible;

    public GoodsItemView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public GoodsItemView(Context context) {
        this(context, null, 0);
    }

    /**
     * 设置初始化地址
     * @param defaultAddress
     */
    public void setAddress(String defaultAddress) {
        mTv_body.setText(defaultAddress);
    }
}
